package com.example.myDesignPatterns.行为型模式.责任链模式Responsibility;

public class explain {
    /**
     * 优点：
     * 降低了对象之间的耦合度
     * 该模式降低了请求发送者和接收者的耦合度。
     * 增强了系统的可扩展性
     * 可以根据需要增加新的请求处理类，满足开闭原则。
     * 增强了给对象指派职责的灵活性
     * 当工作流程发生变化，可以动态地改变链内的成员或者修改它们的次序，也可动态地新增或者删除
     * 责任。
     * 责任链简化了对象之间的连接
     * 一个对象只需保持一个指向其后继者的引用，不需保持其他所有处理者的引用，这避免了使用众多
     * 的 if 或者 if···else 语句。
     * 责任分担
     * 每个类只需要处理自己该处理的工作，不能处理的传递给下一个对象完成，明确各类的责任范围，
     * 符合类的单一职责原则。
     * 2，缺点：
     * 不能保证每个请求一定被处理。由于一个请求没有明确的接收者，所以不能保证它一定会被处理，
     * 该请求可能一直传到链的末端都得不到处理。
     * 对比较长的职责链，请求的处理可能涉及多个处理对象，系统性能将受到一定影响。
     * 职责链建立的合理性要靠客户端来保证，增加了客户端的复杂性，可能会由于职责链的错误设置而
     * 导致系统出错，如可能会造成循环调用。
     */
    /**
     * 优点：
     * 降低了对象之间的耦合度
     * 该模式降低了请求发送者和接收者的耦合度。
     * 增强了系统的可扩展性
     * 可以根据需要增加新的请求处理类，满足开闭原则。
     * 增强了给对象指派职责的灵活性
     * 当工作流程发生变化，可以动态地改变链内的成员或者修改它们的次序，也可动态地新增或者删除
     * 责任。
     * 责任链简化了对象之间的连接
     * 一个对象只需保持一个指向其后继者的引用，不需保持其他所有处理者的引用，这避免了使用众多
     * 的 if 或者 if···else 语句。
     * 责任分担
     * 每个类只需要处理自己该处理的工作，不能处理的传递给下一个对象完成，明确各类的责任范围，
     * 符合类的单一职责原则。
     * 2，缺点：
     * 不能保证每个请求一定被处理。由于一个请求没有明确的接收者，所以不能保证它一定会被处理，
     * 该请求可能一直传到链的末端都得不到处理。
     * 对比较长的职责链，请求的处理可能涉及多个处理对象，系统性能将受到一定影响。
     * 职责链建立的合理性要靠客户端来保证，增加了客户端的复杂性，可能会由于职责链的错误设置而
     * 导致系统出错，如可能会造成循环调用。
     */
}
